--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
lang/README.de.md dev (9051d6cc) Text, 20.84 KB
Tc9d1d9# Reticulum MeshChatX
[Tff7b72English](Te6edf3../README.md) | [Tff7b72Русский](Te6edf3README.ru.md) | [Tff7b72Italiano](Te6edf3README.it.md) | [Tff7b72中文](Te6edf3README.zh.md) | [Tff7b72日本語](Te6edf3README.ja.md)
Ein umfassend modifizierter und funktionsreicher Fork von Reticulum MeshChat von Liam Cottle.
Dieses Projekt ist unabhaengig vom originalen Reticulum MeshChat und steht in keiner Verbindung dazu.
Tff7b72- Website: [Tff7b72meshchatx.com](Te6edf3https://meshchatx.com)
Tff7b72- Forum: [Tff7b72forum.meshchatx.com](Te6edf3https://forum.meshchatx.com/)
Tff7b72- RRC Hub: demnaechst
Tff7b72- Quellcode: [Tff7b72github.com/Quad4-Software/MeshChatX](Te6edf3https://github.com/Quad4-Software/MeshChatX)
Tff7b72- Mirror: [Tff7b72lavaforge.org/Reticulum-Things/MeshChatX](Te6edf3https://lavaforge.org/Reticulum-Things/MeshChatX)
Tff7b72- Releases: [Tff7b72github.com/Quad4-Software/MeshChatX](Te6edf3https://github.com/Quad4-Software/MeshChatX)
Tff7b72- Aenderungsprotokoll: [Ta5d6ff`CHANGELOG.md`](../CHANGELOG.md)
Tff7b72- Spenden: [Ta5d6ff`donate.md`](../donate.md) ([Spenden](#spenden))
Tff7b72- LXMF: Ta5d6ff`f489752fbef161c64d65e385a4e9fc74`
Tff7b72- Umbrel App Store: [Tff7b72apps.umbrel.com/app/meshchatx](Te6edf3https://apps.umbrel.com/app/meshchatx)
<a href="https://apps.obtainium.imranr.dev/redirect.html?r=obtainium://add/https://github.com/Quad4-Software/MeshChatX"><img src="https://raw.githubusercontent.com/ImranR98/Obtainium/main/assets/graphics/badge_obtainium.png" height="60" alt="Get it on Obtainium"></a>
rngit NomadNet Node: Ta5d6ff`5399f5a0212477618821e91e88ce053b:/page/index.mu`
rngit: Ta5d6ff`git clone rns://926baefe13daf5178c174f158dae1b45/quad4/MeshChatX`
MeshChatX NomadNet Node: Ta5d6ff`c10d80b1a42fa958c37a6cc30dc04f53:/page/index.mu`
Tc9d1d9## Wichtige Aenderungen gegenueber Reticulum MeshChat
Tff7b72- Verwendet LXST fuer Anrufe
Tff7b72- Peewee-ORM durch direktes SQL ersetzt
Tff7b72- Axios durch natives Ta5d6ff`fetch` ersetzt
Tff7b72- Electron 41.x (mit Node-24-Laufzeit)
Tff7b72- Ta5d6ff`.whl`-Pakete mit Webserver und eingebauten Frontend-Assets fuer mehr Deploy-Optionen
Tff7b72- i18n
Tff7b72- PNPM und UV fuer Abhaengigkeiten
Tff7b72> [!WARNING]
Tff7b72> MeshChatX garantiert keine Datenkompatibilitaet mit aelteren Reticulum-MeshChat-Versionen. Erstellen Sie vor Migration oder Tests eine Datensicherung.
Tff7b72> [!WARNING]
Tff7b72> Aeltere Systeme werden noch nicht unterstuetzt. Aktuelle Basis: Python `>=3.11` und Node `>=24` (Electron 41 entspricht Node 24; `engines` in `package.json` und CI folgen derselben Linie).
Tc9d1d9## Voraussetzungen
Tff7b72- Python Ta5d6ff`>=3.11` (aus Ta5d6ff`pyproject.toml`)
Tff7b72- Node.js Ta5d6ff`>=24` (aus Ta5d6ff`package.json`, Feld Ta5d6ff`engines`)
Tff7b72- pnpm Ta5d6ff`11.1.2` (aus Ta5d6ff`package.json`, Feld Ta5d6ff`packageManager`)
Tff7b72- UV (verwendet in Ta5d6ff`Taskfile.yml` und CI-Workflows)
**Browser Versions Required:**
Safari 16.4 oder neuer, Chrome 111 oder neuer, Firefox 128 oder neuer (Web-Oberflaeche).
Ta5d6ff```Ta5d6ffbash
task install
task format
task lint
task Tffa657test
task build
Ta5d6ff```
Tc9d1d9## Installationsmethoden
Waehlen Sie die Methode passend zu Umgebung und Paketierung.
| Methode | Frontend enthalten | Architekturen | Geeignet fuer |
| --------------------- | ------------------ | ------------------------------------------- | ----------------------------------- |
| Docker-Image | Ja | Ta5d6ff`linux/amd64`, Ta5d6ff`linux/arm64` | Schnellster Start auf Linux-Servern |
| Python Wheel (Ta5d6ff`.whl`) | Ja | Jede Python-unterstuetzte Architektur | Headless/Webserver ohne Node-Build |
| Linux AppImage | Ja | Ta5d6ff`x64`, Ta5d6ff`arm64` | Portabler Desktop-Einsatz |
| Debian-Paket (Ta5d6ff`.deb`) | Ja | Ta5d6ff`x64`, Ta5d6ff`arm64` | Debian/Ubuntu-Installation |
| RPM-Paket (Ta5d6ff`.rpm`) | Ja | Vom CI-Runner abhaengig (Veroeffentlichung) | Fedora/RHEL/openSUSE |
| Aus Quellcode | Lokal gebaut | Host-Architektur | Entwicklung und individuelle Builds |
Hinweise:
Tff7b72- GitHub Actions baut getaggte Releases (Linux Wheel/AppImage/deb/rpm, Windows, macOS, Flatpak, Android-APKs bei Tags auf dev/master, SLSA, Entwurfs-Release) in einem Lauf über Ta5d6ff`.github/workflows/build-release.yml`; das Container-Image über Ta5d6ff`.github/workflows/docker.yml`. Android-CI für Branches und PRs: Ta5d6ff`.github/workflows/android-build.yml`.
Tff7b72- Linux Ta5d6ff`x64` und Ta5d6ff`arm64` AppImage + DEB werden auf GitHub gebaut; RPM wird versucht und hochgeladen, wenn es erzeugt wird.
Tc9d1d9## Docker
Tff7b72- **Docker Hub:** Ta5d6ff`quad4io/meshchatx`
Tff7b72- **GHCR:** Ta5d6ff`ghcr.io/quad4-software/meshchatx`
Ta5d6ff```Ta5d6ffbash
docker compose up -d
Ta5d6ff```
Ta5d6ff```Ta5d6ffbash
docker run -d --name reticulum-meshchatx Tffea00\
--restart unless-stopped Tffea00\
--init Tffea00\
--user T79c0ff1000:1000 Tffea00\
--security-opt no-new-privileges:true Tffea00\
--cap-drop ALL Tffea00\
--read-only Tffea00\
--tmpfs /tmp:noexec,nosuid,sizeTff7b72=256m Tffea00\
--tmpfs /home/meshchat:nosuid,sizeTff7b72=64m Tffea00\
--cpusTff7b72=T79c0ff2.0 Tffea00\
--memoryTff7b72=1g Tffea00\
--memory-reservationTff7b72=256m Tffea00\
--pids-limitTff7b72=T79c0ff512 Tffea00\
-p T79c0ff127.0.0.1:8000:8000 Tffea00\
-v meshchatx-config:/config Tffea00\
ghcr.io/quad4-software/meshchatx:latest
Ta5d6ff```
Sie koennen Ta5d6ff`quad4io/meshchatx:latest` statt des GHCR-Images verwenden, wenn Sie Docker Hub bevorzugen.
Standard-Compose-Datei:
Tff7b72- Ta5d6ff`127.0.0.1:8000` auf dem Host -> Container-Port Ta5d6ff`8000`
Tff7b72- Docker-Benanntes Volume **`meshchatx-config`** -> **`/config`** fuer Persistenz (passt zum Image-Benutzer **meshchat**, UID 1000, ohne Host-**chown** bei Bind-Mounts)
**Optional: Host-Verzeichnis einbinden**
Ersetzen Sie die Volume-Zeile durch Ta5d6ff`-v "$(pwd)/meshchat-config:/config"` (Compose: Ta5d6ff`volumes`-Eintrag des Service anpassen). Der Container laeuft als **UID 1000**; das Host-Verzeichnis muss dafuer beschreibbar sein (typisch: Ta5d6ff`sudo chown -R 1000:1000 ./meshchat-config`). Leeres Verzeichnis vor dem ersten Start anlegen, damit Docker es nicht mit unpassenden Rechten erzeugt.
**Named Volume pruefen oder loeschen**
Ta5d6ff```Ta5d6ffbash
docker volume inspect meshchatx-config
docker rm -f reticulum-meshchatx
docker volume rm meshchatx-config
Ta5d6ff```
Tc9d1d9## Installation aus Release-Artefakten
Tc9d1d9### 1) Linux AppImage (x64/arm64)
Tff7b721. Ta5d6ff`ReticulumMeshChatX-v<version>-linux-<arch>.AppImage` von den Releases herunterladen.
Tff7b722. Ausfuehrbar machen und starten:
Ta5d6ff```Ta5d6ffbash
chmod +x ./ReticulumMeshChatX-v*-linux-*.AppImage
./ReticulumMeshChatX-v*-linux-*.AppImage
Ta5d6ff```
Tc9d1d9### 2) Debian/Ubuntu `.deb` (x64/arm64)
Tff7b721. Ta5d6ff`ReticulumMeshChatX-v<version>-linux-<arch>.deb` herunterladen.
Tff7b722. Installieren:
Ta5d6ff```Ta5d6ffbash
sudo apt install ./ReticulumMeshChatX-v*-linux-*.deb
Ta5d6ff```
Tc9d1d9### 3) RPM-basierte Systeme
Tff7b721. Ta5d6ff`ReticulumMeshChatX-v<version>-linux-<arch>.rpm` herunterladen, falls im Release vorhanden.
Tff7b722. Installieren:
Ta5d6ff```Ta5d6ffbash
sudo rpm -Uvh ./ReticulumMeshChatX-v*-linux-*.rpm
Ta5d6ff```
Tc9d1d9### 4) Python Wheel (`.whl`)
Release-Wheels enthalten die gebauten Web-Assets.
Ta5d6ff```Ta5d6ffbash
pip install ./reticulum_meshchatx-*-py3-none-any.whl
meshchatx --headless
Ta5d6ff```
Ta5d6ff`pipx` wird ebenfalls unterstuetzt:
Ta5d6ff```Ta5d6ffbash
pipx install ./reticulum_meshchatx-*-py3-none-any.whl
Ta5d6ff```
Tc9d1d9## Aus Quellcode ausfuehren (Webserver-Modus)
Fuer Entwicklung oder lokale Custom-Builds.
Ta5d6ff```Ta5d6ffbash
git clone https://github.com/Quad4-Software/MeshChatX.git
Tffa657cd MeshChatX
corepack Tffa657enable
pnpm config Tffa657set verify-store-integrity Tffa657true
pnpm install --frozen-lockfile
pip install Ta5d6ff"uv==0.11.15"
uv lock --check
uv sync --group dev
pnpm run build-frontend
uv run python -m meshchatx.meshchat --headless --host T79c0ff127.0.0.1
Ta5d6ff```
Hinweise zu den Installationsbefehlen:
Tff7b72- Ta5d6ff`pnpm install --frozen-lockfile` verweigert Aenderungen an Ta5d6ff`pnpm-lock.yaml` und schlaegt fehl, wenn die Lockdatei nicht zu Ta5d6ff`package.json` passt. Damit wird verhindert, dass eine unerwartete Upstream-Version still eingespielt wird.
Tff7b72- Ta5d6ff`verify-store-integrity=true` ist auch in der projektweiten Ta5d6ff`pnpm-workspace.yaml` gesetzt; die explizite Ta5d6ff`pnpm config set`-Zeile haertet zusaetzlich die Benutzerkonfiguration.
Tff7b72- Lifecycle-Skripte (Ta5d6ff`preinstall`/Ta5d6ff`postinstall`) sind in pnpm v11+ standardmaessig blockiert. Nur die unter Ta5d6ff`allowBuilds` in Ta5d6ff`pnpm-workspace.yaml` aufgefuehrten Pakete duerfen Installationsskripte ausfuehren (aktuell Ta5d6ff`electron`, Ta5d6ff`electron-winstaller`, Ta5d6ff`esbuild`).
Tff7b72- Ta5d6ff`uv lock --check` schlaegt frueh fehl, wenn Ta5d6ff`uv.lock` nicht mit Ta5d6ff`pyproject.toml` synchron ist; Ta5d6ff`uv sync --group dev` aufloest danach nur aus der Lockdatei.
Tff7b72- Fuer eine strikte Lockfile-Installation (ohne implizite Lock-Aktualisierung) UV mit Ta5d6ff`pip install "uv==0.11.15"` pinnen, passend zur CI-Version.
Wenn Sie absichtlich Abhaengigkeiten aktualisieren wollen, fuehren Sie Ta5d6ff`pnpm update` / Ta5d6ff`uv lock` in einem dedizierten Commit aus und pruefen Sie das resultierende Lockdatei-Diff vor dem Push.
Tc9d1d9## Sandboxing (Linux)
Um das native Ta5d6ff`meshchatx`-Programm (Alias: Ta5d6ff`meshchat`) mit zusaetzlicher Dateisystem-Isolation auszufuehren, koennen Sie **Firejail** oder **Bubblewrap** (Ta5d6ff`bwrap`) nutzen, bei weiterhin normalem Netzwerkzugriff fuer Reticulum und die Web-Oberflaeche. Vollstaendige Beispiele (pip/pipx, UV, Hinweise zu USB-Seriell) finden Sie in:
Tff7b72- [Ta5d6ff`docs/en/platform-guides/linux-sandbox.md`](../docs/en/platform-guides/linux-sandbox.md)
Dieselbe Seite erscheint in der in-app-Liste **Dokumentation** (MeshChatX-Dokumentation), wenn sie aus den gebuendelten oder synchronisierten Ta5d6ff`meshchatx-docs`-Dateien ausgeliefert wird.
Tc9d1d9## Linux-Desktop: Emoji-Schriften
Die Emoji-Auswahl rendert Standard-Unicode-Emoji mit den Systemschriften (Electron/Chromium). Wenn Emoji als leere Kaestchen („Tofu“) erscheinen, installieren Sie ein Farb-Emoji-Paket und starten Sie die App neu.
| Distribution (Beispiele) | Paket |
| -------------------------- | -------------------------------------------------------------------- |
| Arch Linux, Artix, Manjaro | Ta5d6ff`noto-fonts-emoji` (Ta5d6ff`sudo pacman -S noto-fonts-emoji`) |
| Debian, Ubuntu | Ta5d6ff`fonts-noto-color-emoji` (Ta5d6ff`sudo apt install fonts-noto-color-emoji`) |
| Fedora | Ta5d6ff`google-noto-emoji-color-fonts` |
Nach der Installation bei Bedarf Ta5d6ff`fc-cache -fv` ausfuehren. Optional: Ta5d6ff`noto-fonts` fuer breitere Symbolabdeckung bei minimalen Installationen.
Tc9d1d9## Desktop-Pakete aus Quellcode bauen
Diese Skripte sind in Ta5d6ff`package.json` und Ta5d6ff`Taskfile.yml` definiert.
Tc9d1d9### Linux x64 AppImage + DEB
Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-x64
Ta5d6ff```
Tc9d1d9### Linux arm64 AppImage + DEB
Ta5d6ff```Ta5d6ffbash
pnpm run dist:linux-arm64
Ta5d6ff```
Tc9d1d9### RPM
Ta5d6ff```Ta5d6ffbash
pnpm run dist:rpm
Ta5d6ff```
Oder ueber Task:
Ta5d6ff```Ta5d6ffbash
task dist:fe:rpm
Ta5d6ff```
Tc9d1d9## Container-Build (Wheel, AppImage, deb, rpm)
Ta5d6ff`Dockerfile.build` fuehrt die gleichen Schritte wie die CI aus (uv, pnpm, Ta5d6ff`task`, APT-Paketabhaengigkeiten). Ausgelegt auf **linux/amd64** (NodeSource amd64, Task amd64). Standardziel ist alles; per Build-Arg ueberschreibbar.
Werte fuer Ta5d6ff`MESHCHATX_BUILD_TARGETS`: Ta5d6ff`all` (Standard), Ta5d6ff`wheel` oder Ta5d6ff`electron` (AppImage + deb fuer x64 und arm64, RPM best-effort, kein wheel).
Build:
Ta5d6ff```Ta5d6ffbash
docker build -f Dockerfile.build -t meshchatx-build:local .
Ta5d6ff```
Nur Wheel:
Ta5d6ff```Ta5d6ffbash
docker build -f Dockerfile.build --build-arg Te6edf3MESHCHATX_BUILD_TARGETSTff7b72=wheel -t meshchatx-build:wheel .
Ta5d6ff```
Ta5d6ff`/artifacts` aus dem fertigen Image auf den Host kopieren:
Ta5d6ff```Ta5d6ffbash
Te6edf3cidTff7b72=Tff7b72$(docker create meshchatx-build:localTff7b72)
docker cp Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff:/artifactsTa5d6ff" ./meshchatx-artifacts
docker rm Ta5d6ff"Tffd700${Te6edf3cidTffd700}Ta5d6ff"
Ta5d6ff```
Tc9d1d9## Architekturunterstuetzung
Tff7b72- Docker-Image: Ta5d6ff`amd64`, Ta5d6ff`arm64`
Tff7b72- Linux AppImage: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Linux DEB: Ta5d6ff`x64`, Ta5d6ff`arm64`
Tff7b72- Windows: Ta5d6ff`x64`, Ta5d6ff`arm64` (Build-Skripte vorhanden)
Tff7b72- macOS: Build-Skripte vorhanden (Ta5d6ff`arm64`, Ta5d6ff`universal`) fuer lokale Build-Umgebungen
Tff7b72- Android: nur Universal-APK (siehe [Ta5d6ff`android/README.md`](../android/README.md))
Tc9d1d9## Android
MeshChatX unterstuetzt native Android-APK-Builds (nicht nur Termux).
Tc9d1d9### APKs aus Quellcode bauen
Vom Repository-Root:
Ta5d6ff```Ta5d6ffbash
T8b949e# 1) Chaquopy-Wheels gemaess android/app/build.gradle bauen
bash scripts/build-android-wheels-local.sh
T8b949e# 2) Universal-APK bauen (ein Debug + ein Release pro Lauf; siehe android/README.md)
Tffa657cd android
./gradlew --no-daemon :app:assembleDebug :app:assembleRelease
Ta5d6ff```
**Eine** Android-Variante. Gradle synchronisiert den gesamten Ta5d6ff`meshchatx/`-Ordner nach Ta5d6ff`app/src/main/python/meshchatx/`, inklusive Offline-Repository-Raeder. Dokumentierte und veroeffentlichte Builds nutzen ausschliesslich **Universal**-Packaging: je ein Debug- und ein Release-APK pro Lauf, mit allen in Ta5d6ff`android/app/build.gradle` gewaehlten nativen ABIs.
Tff7b72- Debug: Ta5d6ff`android/app/build/outputs/apk/debug/app-debug.apk`
Tff7b72- Release: Ta5d6ff`android/app/build/outputs/apk/release/ReticulumMeshChatX-v*-android-universal-unsigned.apk`
Tff7b72- GitHub-Release: Ta5d6ff`ReticulumMeshChatX-v<version>-android-universal.apk`
Hinweise:
Tff7b72- Release-Builds sind standardmaessig unsigniert, bis die Signatur konfiguriert ist (Ta5d6ff`scripts/sign-android-apks.sh`).
Tff7b72- Die im Universal-APK enthaltenen nativen ABIs folgen Ta5d6ff`android/app/build.gradle` (einschliesslich Ta5d6ff`armeabi-v7a`, falls aktiviert). Das Bauen von Radern fuer Ta5d6ff`armeabi-v7a` erfordert ein Android-SDK in Ta5d6ff`ANDROID_HOME` (siehe Ta5d6ff`android/README.md`).
Tff7b72- Existiert im Repo-Root Ta5d6ff`dist/reticulum_meshchatx-*.whl` (z. B. nach Ta5d6ff`python -m build --wheel -o dist .`), bevorzugt die Aktualisierung des Offline-Repositorys dieses Wheel gegueber PyPI. In der CI wird das Wheel vor dem Android-Gradle-Schritt gebaut.
Weitere Dokumentation:
Tff7b72- [Ta5d6ff`docs/en/platform-guides/android-termux.md`](../docs/en/platform-guides/android-termux.md)
Tff7b72- [Ta5d6ff`android/README.md`](../android/README.md)
Tc9d1d9## Konfiguration
| Argument | Umgebungsvariable | Standard | Beschreibung |
| -------------------------- | ---------------------------------------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Ta5d6ff`--host` | Ta5d6ff`MESHCHAT_HOST` | Ta5d6ff`127.0.0.1` | Webserver-Bind-Adresse |
| Ta5d6ff`--port` | Ta5d6ff`MESHCHAT_PORT` | Ta5d6ff`8000` | Webserver-Port |
| Ta5d6ff`--no-https` | Ta5d6ff`MESHCHAT_NO_HTTPS` | Ta5d6ff`false` | HTTPS deaktivieren |
| Ta5d6ff`--ssl-cert` / Ta5d6ff`--ssl-key` | Ta5d6ff`MESHCHAT_SSL_CERT` / Ta5d6ff`MESHCHAT_SSL_KEY` | (keine) | PEM-Zertifikat und Schluessel; beide setzen. Ueberschreibt automatisch erzeugte Zertifikate unter der Identitaet im Verzeichnis Ta5d6ff`ssl/`. |
| Ta5d6ff`--rns-log-level` | Ta5d6ff`MESHCHAT_RNS_LOG_LEVEL` | (keine) | Reticulum (RNS) Log-Level: Ta5d6ff`none`, Ta5d6ff`critical`, Ta5d6ff`error`, Ta5d6ff`warning`, Ta5d6ff`notice`, Ta5d6ff`verbose`, Ta5d6ff`debug`, Ta5d6ff`extreme` oder numerisch. CLI ueberschreibt die Umgebungsvariable, wenn beide gesetzt sind. |
| Ta5d6ff`--headless` | Ta5d6ff`MESHCHAT_HEADLESS` | Ta5d6ff`false` | Browser nicht automatisch oeffnen |
| Ta5d6ff`--auth` | Ta5d6ff`MESHCHAT_AUTH` | Ta5d6ff`false` | Basis-Authentifizierung aktivieren |
| Ta5d6ff`--reset-password` | Ta5d6ff`MESHCHAT_RESET_PASSWORD` | Ta5d6ff`false` | Gespeicherten Passwort-Hash loeschen, damit ein neues Passwort ueber die Web-Oberflaeche gesetzt werden kann |
| Ta5d6ff`--storage-dir` | Ta5d6ff`MESHCHAT_STORAGE_DIR` | Ta5d6ff`./storage` | Datenverzeichnis |
| Ta5d6ff`--public-dir` | Ta5d6ff`MESHCHAT_PUBLIC_DIR` | auto/bundled | Frontend-Verzeichnis (fuer Quell-Installationen ohne gebundelte Assets) |
Tc9d1d9## Branches
| Branch | Zweck |
| -------- | ------------------------------------------------------------------------------ |
| Ta5d6ff`master` | Stabile Releases. Nur produktionsreifer Code. |
| Ta5d6ff`dev` | Aktive Entwicklung. Kann instabile oder unvollstaendige Aenderungen enthalten. |
Tc9d1d9## Entwicklung
Gaengige Aufgaben aus Ta5d6ff`Taskfile.yml`:
Ta5d6ff```Ta5d6ffbash
task install
task format
task lint
task Tffa657test
task build
Ta5d6ff```
Ta5d6ff`Makefile`-Ziele sind duenne Wrapper, die an Ta5d6ff`task` delegieren (gleiche Befehle wie oben):
| Befehl | Delegiert an | Beschreibung |
| -------------- | -------------- | -------------------------------------------- |
| Ta5d6ff`make install` | Ta5d6ff`task install` | pnpm- und UV-Abhaengigkeiten installieren |
| Ta5d6ff`make run` | Ta5d6ff`task run` | MeshChatX ueber UV starten |
| Ta5d6ff`make build` | Ta5d6ff`task build` | Frontend- und Backend-Artefakte bauen |
| Ta5d6ff`make lint` | Ta5d6ff`task lint` | ESLint, vue-tsc, knip, Ruff und basedpyright |
| Ta5d6ff`make test` | Ta5d6ff`task test` | Frontend- und Backend-Tests |
| Ta5d6ff`make clean` | Ta5d6ff`task clean` | Build-Artefakte und node_modules entfernen |
Tc9d1d9## Versionierung
Aktuelle Version in diesem Repository: Ta5d6ff`4.8.4`.
Tff7b72- Fuer Release-Bumps bearbeiten Sie **nur** Ta5d6ff`version` in **`package.json`**.
Tff7b72- **`pnpm run version:sync`** (wird auch zu Beginn von **`pnpm run build`** ausgefuehrt) verbreitet diese Version in **`pyproject.toml`**, **`meshchatx/src/version.py`**, **`THIRD_PARTY_NOTICES.txt`** (Produktzeile), **README** / **lang/README.\*** (Zeilen mit aktueller Version), **`docs/en/platform-guides/raspberry-pi.md`** (pipx-Beispiel) und Hilfsfelder in **`packaging/arch/PKGBUILD`**.
Tff7b72- **`meshchatx.__version__`** wird aus **`meshchatx/src/version.py`** gelesen, ohne Ta5d6ff`meshchatx.src` zu importieren, damit ein normales Ta5d6ff`import meshchatx` leicht bleibt.
Tff7b72- **Changelog**-Eintrage bleiben beim Release manuell.
Tc9d1d9## Sicherheit
Tff7b72- [Ta5d6ff`SECURITY.md`](../SECURITY.md)
Tff7b72- [Ta5d6ff`LEGAL.md`](../LEGAL.md)
Tff7b72- Eingebaute Integritaetspruefungen und HTTPS/WSS-Standardwerte in der App-Laufzeit.
Tff7b72- CI- und Release-Builds in GitHub Actions.
Tc9d1d9## Sprache hinzufuegen
Arbeitsablauf des Autors: ArgosTranslate, dann lokales LLM (Qwen 3 + Gemma 4).
Korrekturen von der Community sind willkommen, per LXMF oder wo Sie erreichbar sind.
Die Locale-Erkennung erfolgt automatisch. Fuegen Sie Dateien unter Ta5d6ff`meshchatx/src/frontend/locales/` hinzu (z. B. Ta5d6ff`xx.json`) mit denselben Schluesseln wie Ta5d6ff`en.json` und oberstes Ta5d6ff`_languageName` fuer die Sprachauswahl. Sie koennen Ta5d6ff`en.json` kopieren und alles manuell uebersetzen; **maschinenunterstuetzte Erzeugung (optional)** ist niemals erforderlich.
**Optional: Argos-Translate-Start:** fuer einen Entwurf aus Ta5d6ff`en.json` koennen Sie Ta5d6ff`scripts/argos_translate.py` nutzen; es behandelt Formatierung, farbige Ausgabe und schuetzt z. B. Ta5d6ff`{count}`.
Ta5d6ff```Ta5d6ffbash
T8b949e# argostranslate ggf. installieren
pipx install argostranslate
T8b949e# Uebersetzungsskript ausfuehren
python scripts/argos_translate.py --from en --to xx --input meshchatx/src/frontend/locales/en.json --output meshchatx/src/frontend/locales/xx.json --name Ta5d6ff"Ihr Sprachname"
Ta5d6ff```
Nach jeder maschinellen Runde Grammatik, Kontext und Ton (formell vs. informell) mit LLM oder Mensch pruefen.
Ta5d6ff`pnpm test -- tests/frontend/i18n.test.js --run` prueft die Schluesselparitaet mit Ta5d6ff`en.json`.
Keine weiteren Code-Aenderungen noetig. App, Sprachwahl und Tests lesen Locales zur Build-Zeit aus Ta5d6ff`meshchatx/src/frontend/locales/`.
Tc9d1d9## Spenden
Spenden sind freiwillig. Sie helfen, Zeit und Aufwand fuer die Entwicklung dieser App zu finanzieren.
**Moeglichkeiten:** [Ta5d6ff`donate.md`](../donate.md) (Monero, Ko-Fi, Buy Me a Coffee).
Tc9d1d9## Mitwirkende
Tff7b72- [Tff7b72Liam Cottle](Te6edf3https://github.com/liamcottle) - Originales Reticulum MeshChat
Tff7b72- [Tff7b72RFnexus](Te6edf3https://github.com/RFnexus) - micron-Parser (JavaScript)
Tff7b72- [Tff7b72markqvist](Te6edf3https://github.com/markqvist) - Reticulum, LXMF, LXST
Tc9d1d9## Lizenz
Die projekt-eigenen Anteile stehen unter 0BSD.
Urspruengliche Upstream-Anteile von Reticulum MeshChat bleiben unter MIT.
Vollstaendiger Text und Hinweise in [Ta5d6ff`../LICENSE`](../LICENSE).
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────